home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 1 / The Arsenal Files (Arsenal Computer).ISO / os2_app / cs0056.lst < prev    next >
File List  |  1994-03-03  |  54KB  |  664 lines

  1.   ============================================================================
  2.  |                                                                            |
  3.  |                      C Set/2 Release 1.0 Fixes                             |
  4.  |                                                                            |
  5.   ============================================================================
  6.  |  APAR Number  |  Problem Description                                       |
  7.   ---------------+------------------------------------------------------------
  8.  |    PJ03523    |  Optimization Problem: Bad register selection causes       |
  9.  |               |  general protection fault at runtime.                      |
  10.   ---------------+------------------------------------------------------------
  11.  |    PJ03662    |  Optimization Problem: Bad register selection around a     |
  12.  |               |  call causes incorrect output at runtime.                  |
  13.   ---------------+------------------------------------------------------------
  14.  |    PJ03682    |  Optimization Problem: Tail call optimization was altering |
  15.  |               |  a register erroneously.                                   |
  16.   ---------------+------------------------------------------------------------
  17.  |    PJ03767    |  The compiler could not open files with names containing   |
  18.  |               |  DBCS characters where the second byte of the characters   |
  19.  |               |  was 0x5C.                                                 |
  20.   ---------------+------------------------------------------------------------
  21.  |    PJ03923    |  Optimization Problem: Generated floating-point code was   |
  22.  |               |  causing the floating-point register stack to overflow or  |
  23.  |               |  underflow.                                                |
  24.   ---------------+------------------------------------------------------------
  25.  |    PJ03948    |  Optimization Problem: Multiplying by constant negative    |
  26.  |               |  numbers which are powers of 2 was causing incorrect code  |
  27.  |               |  to be generated.                                          |
  28.   ---------------+------------------------------------------------------------
  29.  |    PJ03952    |  Optimization Problem: Multiplying by constants that are   |
  30.  |               |  near powers of 2 was causing incorrect code to be         |
  31.  |               |  generated.                                                |
  32.   ---------------+------------------------------------------------------------
  33.  |    PJ03957    |  Compiler was emitting object records longer than the      |
  34.  |               |  linker's 1024 byte limit. This causes the linker to       |
  35.  |               |  produce the message "L1057: data record too large.        |
  36.  |               |                                                            |
  37.  |               |  NOTE: There is more than one cause for this symptom       |
  38.  |               |        and fix coming soon.                                |
  39.   ---------------+------------------------------------------------------------
  40.  |    NOAPAR     |  Compile time performance was improved.                    |
  41.   ---------------+------------------------------------------------------------
  42.  |    NOAPAR     |  The compiler was unable to find files in a subdirectory   |
  43.  |               |  on a LAN drive.                                           |
  44.   ============================================================================
  45.  |                                                                            |
  46.  |                All the fixes listed above were included in CS00008         |
  47.  |                                                                            |
  48.   ============================================================================
  49.  |    PJ04295    |  The kbhit library function was not working.               |
  50.   ============================================================================
  51.  |                                                                            |
  52.  |                All the fixes listed above were included in CS00009         |
  53.  |                                                                            |
  54.   ============================================================================
  55.  |    PJ04465    |  The cprintf, fprintf, printf, and sprintf functions were  |
  56.  |               |  not printing floating-point values between 0.5 and 1.0    |
  57.  |               |  correctly when zero precision was specified.              |
  58.   ============================================================================
  59.  |                                                                            |
  60.  |                All the fixes listed above were included in CS00010         |
  61.  |                                                                            |
  62.   ============================================================================
  63.  |    PJ04602    |  Optimization Problem: Simple loops with induction variable|
  64.  |               |  increments greater than one were being incorrectly turned |
  65.  |               |  into memset or memcpy builtin function calls.             |
  66.   ---------------+------------------------------------------------------------
  67.  |    PJ04604    |  When the compiler turned switch statements into jump      |
  68.  |               |  tables, default code segment was always being referenced  |
  69.  |               |  even the if the function containing the switch statement  |
  70.  |               |  was specified in an alloc_text pragma.                    |
  71.   ---------------+------------------------------------------------------------
  72.  |    PJ04652    |  Optimization Problem: The stack pointer was not being     |
  73.  |               |  decremented before an indirect _Optlink call where the    |
  74.  |               |  return value was being used as a parameter to a tail call.|
  75.   ---------------+------------------------------------------------------------
  76.  |    PJ04674    |  When #pragma handler was specified for a 32-bit callback  |
  77.  |               |  function the compiler generated bad code for copying the  |
  78.  |               |  parameters from the 16-bit stack to the 32-bit stack.     |
  79.   ============================================================================
  80.  |                                                                            |
  81.  |                All the fixes listed above were included in CS00011         |
  82.  |                                                                            |
  83.   ============================================================================
  84.  |    PJ04811    |  Incorrect code was being generated for a complicated      |
  85.  |               |  expression where a short variable was being added to the  |
  86.  |               |  address of an element of an array of structures.          |
  87.   ---------------+------------------------------------------------------------
  88.  |    PJ05088    |  Optimization Problem: The compiler was trapping when      |
  89.  |               |  optimizing a loop containing a divide and modulo operation|
  90.  |               |  with the same operands.                                   |
  91.   ---------------+------------------------------------------------------------
  92.  |    PJ05100    |  Optimization Problem: Incorrect code was being generated  |
  93.  |               |  for a switch statement containing a case zero where the   |
  94.  |               |  switch variable had to be converted to an int from an     |
  95.  |               |  unsigned char.                                            |
  96.   ---------------+------------------------------------------------------------
  97.  |    PJ05124    |  Incorrect code was being generated when the result of     |
  98.  |               |  comparing two shorts with less than or greater than       |
  99.  |               |  operators was stored into an integer variable.            |
  100.   ---------------+------------------------------------------------------------
  101.  |    PJ05140    |  Incorrect code was being generated for _Optlink functions |
  102.  |               |  that have a number of floating-point or aggregate         |
  103.  |               |  parameters followed by integer parameters.                |
  104.   ============================================================================
  105.  |                                                                            |
  106.  |                All the fixes listed above were included in CS00012         |
  107.  |                                                                            |
  108.   ============================================================================
  109.  |    PJ05013    |  The compiler was trapping when trying to compile a        |
  110.  |               |  complicated expression where the address of an element of |
  111.  |               |  an array of structures was indexed and then a member of   |
  112.  |               |  the structure was accessed.                               |
  113.   ---------------+------------------------------------------------------------
  114.  |    PJ04674    |  The problem with #pragma handler on callback functions was|
  115.  |               |  really only a problem with _Far16 _Cdecl callback         |
  116.  |               |  functions.  So the fix in CSD0011 broke the case where    |
  117.  |               |  #pragma handler was used on a _Far16 _Pascal callback     |
  118.  |               |  function.  Now both work.                                 |
  119.   ---------------+------------------------------------------------------------
  120.  |    PJ04390    |  The C runtime termination routine was not freeing all     |
  121.  |               |  storage allocated during initialization.                  |
  122.   ---------------+------------------------------------------------------------
  123.  |    PJ05087    |  Partial static initialization of a structure containing   |
  124.  |               |  a union containing a structure containing bitfields was   |
  125.  |               |  not working.                                              |
  126.   ---------------+------------------------------------------------------------
  127.  |    NOAPAR     |  Some enhancements were made to the compiler to reduce     |
  128.  |               |  memory usage dring compilation and therefore reduce       |
  129.  |               |  compile times.                                            |
  130.   ============================================================================
  131.  |                                                                            |
  132.  |                All the fixes listed above were included in CS00013         |
  133.  |                                                                            |
  134.   ============================================================================
  135.  |    PJ05087    |  The assembler listing was incorrect after the real problem|
  136.  |               |  was fixed in CSD0013.                                     |
  137.   ---------------+------------------------------------------------------------
  138.  |    PJ05225    |  Optimization Problem: The compiler was trapping when      |
  139.  |               |  optimizing a procedure containing a loop nested within    |
  140.  |               |  another loop where an invariant in the inner loop was an  |
  141.  |               |  induction variable for the outer loop.                    |
  142.   ---------------+------------------------------------------------------------
  143.  |    PJ05230    |  Optimization Problem: Incorrect code was generated for an |
  144.  |               |  Optlink function containing a loop where an invariant was |
  145.  |               |  a register parameter and it was used in a conditional     |
  146.  |               |  expression within the loop.                               |
  147.   ---------------+------------------------------------------------------------
  148.  |    PJ05393    |  Optimization Problem: The compiler was trapping when      |
  149.  |               |  compiling code with consecutive calls to strcat with the  |
  150.  |               |  same first parameter.                                     |
  151.   ---------------+------------------------------------------------------------
  152.  |    PJ05431    |  Optimization Problem: The compiler was incorrectly        |
  153.  |               |  removing a store to a local variable before a loop.       |
  154.   ---------------+------------------------------------------------------------
  155.  |    PJ05450    |  The thunk prolog routine was using 64K too much stack in  |
  156.  |               |  certain situations.                                       |
  157.   ============================================================================
  158.  |                                                                            |
  159.  |                All the fixes listed above were included in CS00014         |
  160.  |                                                                            |
  161.   ============================================================================
  162.  |    PJ05225    |  The original fix for this problem may have caused other   |
  163.  |               |  optimization problems.  Now we believe that we have a     |
  164.  |               |  complete fix for this problem.                            |
  165.   ---------------+------------------------------------------------------------
  166.  |    PJ05303    |  Optimization Problem: A parameter in an _Optlink function |
  167.  |               |  that was assigned to a global register was not being kept |
  168.  |               |  alive long enough.                                        |
  169.   ---------------+------------------------------------------------------------
  170.  |    PJ05737    |  A "data record too large" message from the linker was     |
  171.  |               |  being generated when a union where the first member was   |
  172.  |               |  more than 1024 bytes smaller than another member was      |
  173.  |               |  being initialized OR when an aggregate within a user data |
  174.  |               |  segment was uninitialized.                                |
  175.   ---------------+------------------------------------------------------------
  176.  |    PJ05722    |  The compiler was generating an IMUL instruction with an   |
  177.  |               |  operand size prefix but the constant was 32 bits long     |
  178.  |               |  instead of 16-bits long.                                  |
  179.   ---------------+------------------------------------------------------------
  180.  |    PJ05723    |  Optimization Problem: The compiler was trapping when      |
  181.  |               |  trying to optimize a floating-point intensive procedure   |
  182.  |               |  where floating-point spills and reloads were necessary.   |
  183.   ---------------+------------------------------------------------------------
  184.  |    PJ05716    |  The compiler was emitting stack probes when the size of   |
  185.  |               |  all local variables was greater than 4K instead of when   |
  186.  |               |  the size is greater than 2K.  In some cases, stack probes |
  187.  |               |  were being emitted in the wrong place as well.  This      |
  188.  |               |  would cause strange traps to occur in multi-threaded      |
  189.  |               |  programs.                                                 |
  190.   ---------------+------------------------------------------------------------
  191.  |    PJ05728    |  Stack probes were not enabled during compilation of       |
  192.  |               |  multi-threaded runtime library code.                      |
  193.   ---------------+------------------------------------------------------------
  194.  |    PJ05556    |  The runtime library termination routine was not checking  |
  195.  |               |  to make sure runtime initialization had completed.        |
  196.   ---------------+------------------------------------------------------------
  197.  |    NOAPAR     |  Provides a means to set the number of spaces to be        |
  198.  |               |  inserted when tabs are encountered in the source file.    |
  199.  |               |  The default tab expansion is 8 spaces, as it was in the   |
  200.  |               |  orignal IPMD.  A new environment variable, PMDTAB, is now |
  201.  |               |  available to customize the tab expansion constant.  For   |
  202.  |               |  example, "SET PMDTAB=5" causes 5 spaces to be inserted    |
  203.  |               |  for every tab.                                            |
  204.   ---------------+------------------------------------------------------------
  205.  |    PJ05863    |  In multithreaded applications, the debugger would perform |
  206.  |               |  a "Run" when a "Step over" or a "Step debug" was          |
  207.  |               |  requested.                                                |
  208.   ---------------+------------------------------------------------------------
  209.  |    PJ05148    |  Internal debugger errors were sometimes reported when     |
  210.  |               |  performing a "Find" and when scrolling the source view.   |
  211.   ---------------+------------------------------------------------------------
  212.  |    PJ05117    |  Occasionally the debugger would automatically shut itself |
  213.  |               |  down when creating or scrolling a source view.  Included  |
  214.  |               |  in this APAR is a problem in which the application is left|
  215.  |               |  active when the debugger terminates after an exception.   |
  216.   ---------------+------------------------------------------------------------
  217.  |    NOAPAR     |  General internal PM debugging enhancements.               |
  218.   ---------------+------------------------------------------------------------
  219.  |    NOAPAR     |  General internal storage window enhancements.             |
  220.   ---------------+------------------------------------------------------------
  221.  |    NOAPAR     |  The name displayed for a subscripted array (i.e., x(i))   |
  222.  |               |  is not always updated - if the value remains the same     |
  223.  |               |  while the name changes, the name is not updated.          |
  224.   ---------------+------------------------------------------------------------
  225.  |    NOAPAR     |  If the stack window is open and data is entered in the    |
  226.  |               |  application window, the stack view can display the wrong  |
  227.  |               |  part name for a function name.  This can also cause the   |
  228.  |               |  debugger to crash if the focus is changed between the     |
  229.  |               |  source, the stack, and the application several times.     |
  230.   ============================================================================
  231.  |                                                                            |
  232.  |                All the fixes listed above were included in CS00022         |
  233.  |                                                                            |
  234.   ============================================================================
  235.  |    NOAPAR     |  Exception handler registration records were causing stack |
  236.  |               |  chaining to be disabled because of their location in the  |
  237.  |               |  instruction stream.                                       |
  238.   ---------------+------------------------------------------------------------
  239.  |    PJ06109    |  Optimization Problem: Multiplication by some particular   |
  240.  |               |  constants was being done incorrectly when the /G4 switch  |
  241.  |               |  was specified.                                            |
  242.   ---------------+------------------------------------------------------------
  243.  |    PJ06417    |  The compiler was not generating code to check for NULL    |
  244.  |               |  before calling _DosSelToFlat when a 16-bit pointer was    |
  245.  |               |  being converted to a 32-bit pointer.                      |
  246.   ---------------+------------------------------------------------------------
  247.  |    PJ06023    |  Optimization Problem: The wrong register was being used   |
  248.  |               |  when a virtual global register was reassociated with a    |
  249.  |               |  different real register. This showed up with nested loops |
  250.  |               |  where an induction variable in an outer loop is an        |
  251.  |               |  invariant within an inner loop.                           |
  252.   ---------------+------------------------------------------------------------
  253.  |    NOAPAR     |  Optimization Problem: Multiplication by certain negative  |
  254.  |               |  constants was being done incorrectly.                     |
  255.   ---------------+------------------------------------------------------------
  256.  |    PJ06022    |  Optimization Problem: A parameter register was not being  |
  257.  |               |  kept alive until the end of a loop when the last use of   |
  258.  |               |  the parameter is within the loop.                         |
  259.   ---------------+------------------------------------------------------------
  260.  |    PJ05928    |  Floating Point Number Formatting Problem:  Printf         |
  261.  |               |  formating with %g was crashing if the precision           |
  262.  |               |  requested exceeded 16 digits.                             |
  263.   ---------------+------------------------------------------------------------
  264.  |    PJ06439    |  Ceil and Floor Functions did not restore 387 flags.       |
  265.   ---------------+------------------------------------------------------------
  266.  |    PJ06454    |  Exception Handler Problem: If an exception occurs during  |
  267.  |               |  a library critical routine, and a second user exception   |
  268.  |               |  occurs while in a nested critical routine belonging to    |
  269.  |               |  the first exception, the exception handler will loop and  |
  270.  |               |  hang the process.                                         |
  271.   ---------------+------------------------------------------------------------
  272.  |    PJ06436    |  Optimization Problem: Statements of the form:             |
  273.  |               |  "if (bool) {x.a = const} else {x.b = const}" were being   |
  274.  |               |  simplified incorrectly to "x.a=const".                    |
  275.   ============================================================================
  276.  |                                                                            |
  277.  |                All the fixes listed above were included in CS00026         |
  278.  |                                                                            |
  279.   ============================================================================
  280.  |    NOAPAR     |  DBCS enablement changes to IPMD.                          |
  281.  |               |  Add the keyboard status indicator to the dialogs.         |
  282.   ---------------+------------------------------------------------------------
  283.  |    NOAPAR     |  DBCS enabled.  Fixed the stack probe option.              |
  284.  |               |  Updated help text for the stack probe option and added    |
  285.  |               |  the key help for the DDE4CSET.DLL.                        |
  286.   ---------------+------------------------------------------------------------
  287.  |    PJ06460    |  Optimization Problem: If an extern is modified inside a   |
  288.  |               |  loop while it's in a register, jumping from within that   |
  289.  |               |  loop to a return could sometimes bypass the code that     |
  290.  |               |  copies the register back to memory.                       |
  291.   ---------------+------------------------------------------------------------
  292.  |    PJ06459    |  Optimization Problem: Consecutive calls to the memmove,   |
  293.  |               |  memcpy, or memset functions with similar destination      |
  294.  |               |  addresses could fail if the returned address from the     |
  295.  |               |  first call is used before the second call.                |
  296.   ---------------+------------------------------------------------------------
  297.  |    PJ06584    |  Occasionally with optimization, loop exits coinciding with|
  298.  |               |  function exits caused incorrect termination of the loop.  |
  299.   ---------------+------------------------------------------------------------
  300.  |    PJ06610    |  Optimization Problem: Statements of the form:             |
  301.  |               |  "if (bool) {x = const0} else {x = const1}" could cause    |
  302.  |               |  a compile-time exception if "x" is an address.            |
  303.   ---------------+------------------------------------------------------------
  304.  |    PJ06593    |  Optimization Problem: Statements of the form given above  |
  305.  |               |  (PJ06610) could be incorrectly optimized if the "bool"    |
  306.  |               |  expression does not contain a relational or equality      |
  307.  |               |  operator.  For example: (bool) or (!bool).                |
  308.   ---------------+------------------------------------------------------------
  309.  |    PJ06637    |  Passing structs by value during _Optlink calls could cause|
  310.  |               |  the caller to incorrectly set up subsequent parameters.   |
  311.   ---------------+------------------------------------------------------------
  312.  |    PJ06742    |  The compiler could incorrectly set up the return register |
  313.  |               |  for calls to _DosFlatToSel with 16-bit function pointers, |
  314.  |               |  and thus cause register selection problems.               |
  315.   ---------------+------------------------------------------------------------
  316.  |    PJ06583    |  Optimization Problem: Gotos within the inner loop of a    |
  317.  |               |  nested loop could cause incorrect spilling of a variable  |
  318.  |               |  if the variable was used in the inner loop but not in     |
  319.  |               |  the outer loops.                                          |
  320.   ---------------+------------------------------------------------------------
  321.  |    PJ06813    |  Optimization Problem: A floating-point cast of the same   |
  322.  |               |  integer variable both before and inside an "if" could     |
  323.  |               |  cause the floating-point stack to become inconsistant.    |
  324.   ---------------+------------------------------------------------------------
  325.  |    PJ06623    |  Freopen Library Function: freopen function did not allow  |
  326.  |               |  the changing of the text/binary mode of a standard stream |
  327.  |               |  without redirecting to a different file.  For example:    |
  328.  |               |  freopen( "", "rb", stdin );                               |
  329.   ---------------+------------------------------------------------------------
  330.  |    PJ06904    |  Relax some of the restrictions on arrays of incomplete    |
  331.  |               |  types so that cfront-generated code can compile.          |
  332.   ---------------+------------------------------------------------------------
  333.  |    PJ06776    |  When a comma operator is used to evaluate the address     |
  334.  |               |  of a function being called, an internal compiler error    |
  335.  |               |  occurs.  Code Generation of Front End now fixed.          |
  336.   ============================================================================
  337.  |                                                                            |
  338.  |                All the fixes listed above were included in CS00028         |
  339.  |                                                                            |
  340.   ============================================================================
  341.  |    PJ06624    |  Optimization Problem: Using the address of a parameter    |
  342.  |               |  passed in a register could cause the compiler to trap     |
  343.  |               |  if basic blocks are merged.                               |
  344.   ---------------+------------------------------------------------------------
  345.  |    PJ06768    |  Optimization Problem: Multiplying two addresses that have |
  346.  |               |  been cast to integers could cause the compiler to trap.   |
  347.   ---------------+------------------------------------------------------------
  348.  |    PJ06846    |  Optimization Problem: A large number of consecutive       |
  349.  |               |  statements that each use values calculated in previous    |
  350.  |               |  statements could cause the swapper to grow very large.    |
  351.   ---------------+------------------------------------------------------------
  352.  |    PJ06841    |  Optimization Problem: The compiler could trap if the last |
  353.  |               |  "if" in a loop turns into a jump to the top of the loop.  |
  354.   ============================================================================
  355.  |                                                                            |
  356.  |                All the fixes listed above were included in CS00030         |
  357.  |                                                                            |
  358.   ============================================================================
  359.  |    PJ06929    |  Optimization Problem: A ternary within a loop could in    |
  360.  |               |  very rare cases cause a global register to be incorrectly |
  361.  |               |  clobbered.                                                |
  362.   ---------------+------------------------------------------------------------
  363.  |    PJ06881    |  Folding of the following expressions incorrectly removed  |
  364.  |               |  x if x had side effects:  (0  /  x)  --->  0              |
  365.  |               |                            (0  %  x)  --->  0              |
  366.  |               |                            (x  %  1)  --->  0              |
  367.  |               |                            (x  % -1)  --->  0              |
  368.  |               |                            (x  *  0)  --->  0              |
  369.  |               |                            (x  &  0)  --->  0              |
  370.  |               |                            (x  | -1)  ---> -1              |
  371.   ---------------+------------------------------------------------------------
  372.  |    PJ06862    |  Optimization Problem: This is a more general fix to the   |
  373.  |               |  problem dealt with in PJ06846.                            |
  374.   ---------------+------------------------------------------------------------
  375.  |    PJ06908    |  Without optimization, casts from an unsigned short to a   |
  376.  |               |  double could yield incorrect conversions.  The problem    |
  377.  |               |  disappears when compiling with /O+.                       |
  378.   ---------------+------------------------------------------------------------
  379.  |    NOAPAR     |  Allow ASCII characters above 0x80 to display in the       |
  380.  |               |  source view of the debugger                               |
  381.   ============================================================================
  382.  |                                                                            |
  383.  |                All the fixes listed above were included in CS00032         |
  384.  |                                                                            |
  385.   ============================================================================
  386.  |    PJ07151    |  Optimization Problem: Transformation of a simple loop to  |
  387.  |               |  either a memset or a memcpy could create initialization   |
  388.  |               |  problems if the loop induction variable is unsigned.      |
  389.   ---------------+------------------------------------------------------------
  390.  |    PJ07244    |  Optimization Problem: The constant value stored during    |
  391.  |               |  the builtin memset could be incorrectly calculated for    |
  392.  |               |  char and short types.                                     |
  393.   ---------------+------------------------------------------------------------
  394.  |    PJ06920    |  Preprocessor Problem: If a macro replacement token is     |
  395.  |               |  empty, in some cases we were erroneously substituting     |
  396.  |               |  it with a right parenthesis.                              |
  397.   ---------------+------------------------------------------------------------
  398.  |    PJ07198    |  Optimization Problem: Dead store removal within loops     |
  399.  |               |  failed to consider conditional stores and thus could      |
  400.  |               |  incorrectly remove a store that was not dead.             |
  401.   ---------------+------------------------------------------------------------
  402.  |    PJ06024    |  Optimization Problem: Bad invariant code motion could     |
  403.  |               |  result in a general protection fault at compile-time.     |
  404.   ---------------+------------------------------------------------------------
  405.  |    PJ07215    |  Optimization Problem: Calls to 16-bit functions could     |
  406.  |               |  cause inappropriate tail-call optimization to occur.      |
  407.   ---------------+------------------------------------------------------------
  408.  |    PJ07253    |  An internal problem could cause a compile-time general    |
  409.  |               |  protection fault when generating debugger information     |
  410.  |               |  without optimization.                                     |
  411.   ---------------+------------------------------------------------------------
  412.  |    PJ07259    |  FE Problem: When utilizing a pointer to a pointer to data,|
  413.  |               |  the compiler is only dereferencing the pointer once.      |
  414.   ---------------+------------------------------------------------------------
  415.  |    NOAPAR     |  Optimization Problem: An internal problem could cause     |
  416.  |               |  a compile-time general protection fault when keeping a    |
  417.  |               |  floating-point parameter alive in a register.             |
  418.   ============================================================================
  419.  |                                                                            |
  420.  |                All the fixes listed above were included in CS00034         |
  421.  |                                                                            |
  422.   ============================================================================
  423.  |    NOAPAR     |  Optimization Problem: Strength reduction of a             |
  424.  |               |  compiler-generated constant could result in a general     |
  425.  |               |  protection fault at compile-time.                         |
  426.   ---------------+------------------------------------------------------------
  427.  |    NOAPAR     |  Optimization Problem: Tail recursion elimination could    |
  428.  |               |  incorrectly handle parameter aliases.                     |
  429.   ---------------+------------------------------------------------------------
  430.  |    NOAPAR     |  BE Problem: Incorrect code may be generated for _Far16    |
  431.  |               |  _Pascal callback functions that return floating-point     |
  432.  |               |   types.                                                   |
  433.   ---------------+------------------------------------------------------------
  434.  |    PJ07295    |  Performance improvement of strstr.                        |
  435.   ---------------+------------------------------------------------------------
  436.  |    PJ07356    |  _fullpath was not returning the correct result when       |
  437.  |               |  ..\ was passed in as the partial path.                    |
  438.   ---------------+------------------------------------------------------------
  439.  |    NOAPAR     |  BE Problem: Incorrect code may be generated with the      |
  440.  |               |  combination of _alloca and #pragma handler.               |
  441.   ============================================================================
  442.  |                                                                            |
  443.  |                All the fixes listed above were included in CS00036         |
  444.  |                                                                            |
  445.   ============================================================================
  446.  |    PJ07414    |  Initialization Problem: Floating point 387 not cleared    |
  447.  |               |  during runtime initialization.                            |
  448.   ---------------+------------------------------------------------------------
  449.  |    PJ07631    |  Calloc Problem: Storage returned from calloc was not      |
  450.  |               |  set to zeroes after a realloc to a smaller size.          |
  451.   ---------------+------------------------------------------------------------
  452.  |    NOAPAR     |  Dump Problem: Incorrect NPX values were being displayed   |
  453.  |               |  for floating point exception dumps.                       |
  454.   ---------------+------------------------------------------------------------
  455.  |    NOAPAR     |  Fastsem: Making Fastsem multiprocessor safe.              |
  456.   ---------------+------------------------------------------------------------
  457.  |    PJ07672    |  I/O problem:  When a nonseekable device (e.g. LPT1, CON,  |
  458.  |               |  pipe, COM1) is opened with append mode, any attempt to    |
  459.  |               |  write to such device will fail with an OS/2 error 132.    |
  460.   ---------------+------------------------------------------------------------
  461.  |    PJ07673    |  FE Problem: Pointer to structure member (that is a struct)|
  462.  |               |  assigned to pointer to structure member (also a struct)   |
  463.  |               |  and then applying dot operator caused incorrect code.     |
  464.   ---------------+------------------------------------------------------------
  465.  |    PJ07600    |  DDE4.NDX - Removed incorrect references to the            |
  466.  |               |  toolkit information.                                      |
  467.   ============================================================================
  468.  |                                                                            |
  469.  |                All the fixes listed above were included in CS00038         |
  470.  |                                                                            |
  471.   ============================================================================
  472.  |    PJ07710    |  Optimization Problem: Casting char or short types to a    |
  473.  |               |  long type and then performing a bitwise AND on the result |
  474.  |               |  could lead to incorrect code generation if the upper 16   |
  475.  |               |  bits of the AND mask contain set bits.                    |
  476.   ---------------+------------------------------------------------------------
  477.  |    NOAPAR     |  Optimization Problem: A do loop with a complex while      |
  478.  |               |  condition could be incorrectly unrolled.                  |
  479.   ---------------+------------------------------------------------------------
  480.  |    NOAPAR     |  Optimization Problem: An internal problem could cause     |
  481.  |               |  a compile-time general protection fault when destroying   |
  482.  |               |  unreachable code.                                         |
  483.   ---------------+------------------------------------------------------------
  484.  |    PJ07429    |  Optimization Problem: If the last use of a floating-point |
  485.  |               |  parameter occurs near the beginning of a function before  |
  486.  |               |  any control flow statements, that parameter could be left |
  487.  |               |  on the floating-point stack when the function returns.    |
  488.   ---------------+------------------------------------------------------------
  489.  |    PJ07422    |  FE Problem: Compiler is erroneously generating warning    |
  490.  |               |  message EDC0830 on some enum usage when compiled with     |
  491.  |               |  -Ke+ switch.                                              |
  492.   ---------------+------------------------------------------------------------
  493.  |    PJ07766    |  Compiler Trap: The compiler would generate an exception   |
  494.  |               |  if a bitfield was post-incremented and used as the right  |
  495.  |               |  hand side of an assignment within the same statement.     |
  496.   ============================================================================
  497.  |                                                                            |
  498.  |                All the fixes listed above were included in CS00040         |
  499.  |                                                                            |
  500.   ============================================================================
  501.  |    PJ07908    |  Library Problem: Exception occurs when user presses       |
  502.  |               |  control c in a conio input routine.                       |
  503.   ---------------+------------------------------------------------------------
  504.  |    PJ07909    |  Library Problem: Memory allocation performance improvement|
  505.   ---------------+------------------------------------------------------------
  506.  |    PJ07984    |  Optimization Problem: Constant propagation could be       |
  507.  |               |  performed incorrectly when a store to one member of a     |
  508.  |               |  union clobbers a store to another member.                 |
  509.   ---------------+------------------------------------------------------------
  510.  |    PJ07986    |  Optimization Problem: If the last usage of a register     |
  511.  |               |  parameter is a store in the last block of a loop, then    |
  512.  |               |  incorrect code could be generated.                        |
  513.   ---------------+------------------------------------------------------------
  514.  |    PJ08032    |  Optimization Problem: Post-incrementing a variable that   |
  515.  |               |  is used as a parameter to consecutive function calls could|
  516.  |               |  cause incorrect constant propagation.                     |
  517.   ---------------+------------------------------------------------------------
  518.  |    PJ08046    |  Library Problem: Change macro definition of isascii.      |
  519.   ---------------+------------------------------------------------------------
  520.  |    PJ08065    |  BE Problem: Pointer subtraction, where the pointers point |
  521.  |               |  to members of a structure, could cause incorrect code     |
  522.  |               |  generation.                                               |
  523.   ---------------+------------------------------------------------------------
  524.  |    PJ08066    |  Optimization Problem: A ternary that uses volatile unions |
  525.  |               |  could cause incorrect code generation if the result of the|
  526.  |               |  conditional expression is used immediately after.         |
  527.   ============================================================================
  528.  |                                                                            |
  529.  |                All the fixes listed above were included in CS00042         |
  530.  |                                                                            |
  531.   ============================================================================
  532.  |    NOAPAR     |  Compiler Trap:  An internal problem could cause           |
  533.  |               |  a general protection fault during compilation.            |
  534.   ---------------+------------------------------------------------------------
  535.  |    NOAPAR     |  Library Problem:  Fixed obscure malloc/heapmin bug.       |
  536.   ============================================================================
  537.  |                                                                            |
  538.  |                All the fixes listed above were included in CS00044         |
  539.  |                                                                            |
  540.   ============================================================================
  541.  |    NOAPAR     |  Optimization Problem: An internal problem with loop       |
  542.  |               |  invariant code motion could cause a compile-time error.   |
  543.   ---------------+------------------------------------------------------------
  544.  |    PJ08413    |  BE Problem: Under certain conditions, memset was not      |
  545.  |               |  clearing the upper 2 bytes of the value register.         |
  546.   ---------------+------------------------------------------------------------
  547.  |    PJ08285    |  BE Problem: Incorrect code generated when right shifting  |
  548.  |               |  an unsigned char, which has been casted to a long, and    |
  549.  |               |  then assigning the result to an unsigned char.            |
  550.   ---------------+------------------------------------------------------------
  551.  |    PJ08300    |  RT Problem: _fullpath cannot parse "G:" , "C:", etc.      |
  552.  |               |  This is an API behaviour. Since C386 can parse the        |
  553.  |               |  above correctly, we decided to modify the call to         |
  554.  |               |  the API to accept "C:", "G:", etc.                        |
  555.   ---------------+------------------------------------------------------------
  556.  |    PJ08415    |  Optimization Problem: Global folding could be performed   |
  557.  |               |  incorrectly when a store to one member of a union clobbers|
  558.  |               |  a store to another member.                                |
  559.   ---------------+------------------------------------------------------------
  560.  |    PJ08286    |  Optimization Problem: Gotos near the bottom of a loop     |
  561.  |               |  which jump to code right after the loop could cause       |
  562.  |               |  incorrect code to be generated.                           |
  563.   ---------------+------------------------------------------------------------
  564.  |    PJ08456    |  BE Problem: Returning a struct by value could result in   |
  565.  |               |  incorrect code generation if the return statement calls   |
  566.  |               |  another function whose return type is a pointer to struct.|
  567.   ---------------+------------------------------------------------------------
  568.  |    NOAPAR     |  Optimization Problem: Tail call optimization could        |
  569.  |               |  generate incorrect code if the current function contains  |
  570.  |               |  a call to _alloca.                                        |
  571.   ---------------+------------------------------------------------------------
  572.  |    PJ08473    |  FE Problem: Casts from function pointers to segmented     |
  573.  |               |  data pointers were improperly being flagged as errors.    |
  574.   ============================================================================
  575.  |                                                                            |
  576.  |                All the fixes listed above were included in CS00046         |
  577.  |                                                                            |
  578.   ============================================================================
  579.  |    PJ08488    |  Optimization Problem: A parameter register could be       |
  580.  |               |  incorrectly clobbered if a use follows a def.             |
  581.   ---------------+------------------------------------------------------------
  582.  |    PJ08489    |  Optimization Problem: The register assigner could         |
  583.  |               |  choose the wrong register when trying to optimize the     |
  584.  |               |  use of byte registers. (ie: AL vs AH)                     |
  585.   ---------------+------------------------------------------------------------
  586.  |    PJ08487    |  Optimization Problem: A problem in the builtin memmove    |
  587.  |               |  could cause a run-time general protection fault.          |
  588.   ---------------+------------------------------------------------------------
  589.  |    PJ08486    |  BE Problem: Assigning a function returning an aggregate   |
  590.  |               |  to an array element whose index results from evaluating   |
  591.  |               |  another function could cause incorrect code generation.   |
  592.   ============================================================================
  593.  |                                                                            |
  594.  |                All the fixes listed above were included in CS00048         |
  595.  |                                                                            |
  596.   ============================================================================
  597.  |    PJ08712    |  BE Problem: Casting 0xFFFF0001 to unsigned long and then  |
  598.  |               |  to unsigned short incorrectly gives 0 instead of 1.       |
  599.   ---------------+------------------------------------------------------------
  600.  |    PJ09159    |  FE Problem: pointers in 16-bit function definitions       |
  601.  |               |  were not getting _Seg16 qualifiers.                       |
  602.   ---------------+------------------------------------------------------------
  603.  |    PJ08715    |  Optimization Problem: An internal problem with strength   |
  604.  |               |  reduction could cause a compile-time error.               |
  605.   ---------------+------------------------------------------------------------
  606.  |    PJ08714    |  BE Problem: An internal problem with code generation      |
  607.  |               |  could cause a compile-time general protection fault when  |
  608.  |               |  generating debugger information.                          |
  609.   ---------------+------------------------------------------------------------
  610.  |    NOAPAR     |  BE Problem: Copying large parameters (> 4096 bytes) onto  |
  611.  |               |  the stack could be done incorrectly.                      |
  612.   ---------------+------------------------------------------------------------
  613.  |    NOAPAR     |  BE Problem: An internal problem occuring while generating |
  614.  |               |  an assembler listing file could cause a compile-time      |
  615.  |               |  general protection fault.                                 |
  616.   ---------------+------------------------------------------------------------
  617.  |    PJ08753    |  RT Problem: When flushing a buffer of size greater than   |
  618.  |               |  8192 (8K) bytes and the buffer contains no LF, the library|
  619.  |               |  will trap with a General Protection fault.  This usually  |
  620.  |               |  happens when the user sets the buffer size using setvbuf  |
  621.  |               |  to a value greater than 8192.                             |
  622.   ---------------+------------------------------------------------------------
  623.  |    NOAPAR     |  RT Problem: Function _getdcwd incorrectly returns NULL    |
  624.  |               |  and sets errno to 60 when the pointer passed to _getdcwd  |
  625.  |               |  function as the second parameter is NULL.                 |
  626.   ---------------+------------------------------------------------------------
  627.  |    NOAPAR     |  FE Problem: Front-end might fail unpredictably when       |
  628.  |               |  /Fl or /L option is specified without source listing (/Ls)|
  629.   ============================================================================
  630.  |                                                                            |
  631.  |                All the fixes listed above were included in CS00050         |
  632.  |                                                                            |
  633.   ============================================================================
  634.  |    QUAL-IMP   |  BE Problem: Incorrect code may be generated when copying  |
  635.  |               |  structures whose size is less than 12 bytes.              |
  636.   ---------------+------------------------------------------------------------
  637.  |    PJ11434    |  Optimization Problem: Bad register selection around switch|
  638.  |               |  statements could cause incorrect code generation.         |
  639.   ---------------+------------------------------------------------------------
  640.  |    PJ11435    |  Optimization Problem: An internal problem occuring during |
  641.  |               |  global folding could cause a run-time exception.          |
  642.   ---------------+------------------------------------------------------------
  643.  |    PJ11436    |  Optimization Problem: When an infinite loop has a         |
  644.  |               |  conditional return as its last statement, incorrect code  |
  645.  |               |  may be generated if a variable used in the return was     |
  646.  |               |  assigned to a register within the loop.                   |
  647.   ---------------+------------------------------------------------------------
  648.  |    PJ11437    |  BE Problem: Without optimization, an expression of the    |
  649.  |               |  form "*((char*)&array╒index■+i)" could generate an        |
  650.  |               |  incorrect OBJ even though the ASM is correct.             |
  651.   ============================================================================
  652.  |                                                                            |
  653.  |                All the fixes listed above were included in CS00054         |
  654.  |                                                                            |
  655.   ============================================================================
  656.  |    NOAPAR     |  Optimization Problem: Incorrect register selection could  |
  657.  |               |  lead to traps or unexpected results with 32 to 16 or      |
  658.  |               |  16 to 32 code.                                            |
  659.   ============================================================================
  660.  |                                                                            |
  661.  |                All the fixes listed above were included in CS00056         |
  662.  |                                                                            |
  663.   ============================================================================
  664.